package com.xuecheng.order.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.xuecheng.api.order.model.dto.OrdersDTO;
import com.xuecheng.api.order.model.vo.PayResultModel;
import com.xuecheng.order.entity.Orders;

import java.util.Map;

/**
 * <p>
 * 订单 服务类
 * </p>
 *
 * @author itcast
 * @since 2021-05-21
 */
public interface OrdersService extends IService<Orders> {

    /**
     * 根据课程发布ID生成和修改课程支付订单
     *
     * @param coursePubId 课程发布ID
     * @return 课程支付订单详情
     */
    OrdersDTO createOrModifyOrders(Long coursePubId, String username);

    /**
     * 微信支付：根据课程订单号,用户名 去创建订单，返回codeURL(二维码链接)
     *
     * @param orderNo  课程订单号
     * @param username 用户名
     * @return codeURL(二维码链接)以及相应状态
     */
    Map<String, Object> createPay(String orderNo, String username);

    /**
     * 支付结果通知并发送事务消息
     * @param xmlPayResult 支付结果
     * @return
     */
    String notifyPayResult(String xmlPayResult);

    /**
     * 订单支付通知,执行本地事务,修改付款状态
     * @param resultModel 响应结果
     */
    void successPayment(PayResultModel resultModel);
}
